hostname与hosts的学习

记录下hostname和/etc/hosts的学习笔记。

测试用的是centos,版本信息为3.10.0-514.el7.x86_64

hostname是什么

Hostname is a kernel parameter which stores hostname of the system. Its location is”/proc/sys/kernel/hostname” The value for this parameter is loaded to kernel by rc.sysinit file during the boot process.

上面这段话有几个点

  • hostname真实值是/proc/sys/kernel/hostname
  • rc.sysinit负责加载

在之前的版本中,通常是修改/etc/sysconfig/network中的HOSTNAME来实现hostname修改,但是在centos7中,需要修改/etc/hostname

注意,上述的两种方式,都是reboot后才生效的。

hosts是什么

  • 主机在查询域名映射的 IP 时,最先查询的地方。记录了主机域名与其 IP 之间的映射关系
  • 格式为IP地址 主机或者域名 [主机的别名] [主机的别名]....,例如

    1
    127.0.0.1 localhost localhost.localdomain

更多的信息参考wiki)。

几个常见的问题

  1. 如果想修改hostname,如何修改?
  2. 修改hosts为何会对hostname有影响

如果想修改hostname,如何修改?

  • 前文提到的,修改/etc/hostname,并且重启
  • sysctl kernel.hostname = toutoudnf
    • 即可生效(hostname可查询到)
    • 重启会丢失(重新读取/etc/hostname中的值)
  • hostnamectl set-hostname toutoudnf
    • 即可生效(hostname可查询到)
    • 重启不会丢失(修改了/etc/hostname中的值)
  • hostname toutoudnf
    • 即可生效(hostname可查询到)
    • 重启会丢失(重新读取/etc/hostname中的值)
  • echo toutoudnf > /proc/sys/kernel/hostname
    • 即可生效(hostname可查询到)
    • 重启会丢失(重新读取/etc/hostname中的值)

但是建议在centos7中,还是通过hostnamectl来修改。详情可以参考:redhat7 Networking_Guide

修改hosts对hostname的影响

待补充。在较早的版本中貌似是有影响的,参考的是文章戳这里